ドラゴンクエスト4
2.幸せのベホマラーについて2 2002/03/05

前回で、べホマラーの回復量には アドレス0070の値の大きさが関係していることと、
キャラクターの並べ替えが関係していること がわかりました。


今回は戦闘終了後に0070の値が変化する原因を調査します。



----------


ベホマラーが戦闘直後に効果が上昇することがあるのに関して、
敵のゴールドが関係あるみたいです。


・0070の値は、全く同じ組み合わせの敵との戦闘の後はいつも同じ数値になっていました。

・そこで、経験値で調べてみたんですがダメでした。

・ゴールドで調べてみると、、、ビンゴ〜!!


ってことで、何ゴールドのときに数値が増えるのか具体的に調べてみました。

ところが数値が増える時のゴールドに、これといった規則性は見つけられなかったんですよ。
(ここで言う規則性ってのは、例えばゴールドが8の倍数の時とか)

・・・と、考えていた矢先、数値が増えているのは戦闘後取得ゴールドが256以上の時だという事に
やっとこさ気付いたわけですよ・・・

以下にどんな風になっているかを書いてありますので、是非、御覧下さい。

-------------------------------------------

戦闘後に得られるゴールドのアドレスはこんな感じです。
11201 G小
11202 G大

11202は256G単位なので256G手に入れた時は
11201の値が00
11202の値が01
という事になります。わかりますよね。


実は、この、11202の値が戦闘終了後(取得ゴールド表示時)に0070に(なぜだか)入ります。
0070の数値がいくつか増えればベホマラーの効果は増します。

つまりゴールドをたくさん持っている敵ほど0070の数値は大きくなり、
ゴールドをたくさん持っている敵という事は、基本的に強めの敵を
倒した時に大きな効果が現れるという事ですね。


  実験…
例えば、終盤に出てくる敵でもGをたくさん持っている敵としてマネマネ
倒してみます。
マネマネ4匹では1264ゴールド持っているので
1264÷256= --- 余り240
なので0070の数値は4になります。
(余り算をしなくても整数部分を見ればいいんですけどね。)
つまりマネマネ4匹を倒した直後のベホマラーでは大抵完全回復します。


終盤の敵で、さっきとは逆に、トーテムキラー4匹では208ゴールドしか持ってないので、
11202の値は00です。
結果、0070の値も00になり、ベホマラーは通常の効果しか現れなくなっています。

もちろん、同じトーテムキラー4匹でも11202の値を1以上に固定しておけば、
戦闘後に取得ゴールドが表示された時点で0070の値は固定した値になっています。
(もちろんベホマラー効果もアップですよ)


結局、敵を倒した後の取得ゴールドが
  0〜255なら0700の値は00
256〜511なら0700の値は01
512〜767なら0700の値は02
・・・・・
という風になって続いていきます。

おわり。




えー…、先にも書きましたが、
ゴールドがたくさん → 敵が強かった → パーティーは弱いザコ敵時よりもダメージを受けている
→ ベホマラーを効果アップしよう!
・・・という事なんでしょうか?


まぁ、前回の入れ替えと併せて考えても、
パーティーがピンチになっていそうな時に幸せのベホマラーが出る仕組みになっているように見えます。


まさか、ただのバグにもなりきらないバグってことではないよな・・・!
なんて考えたりして・・・。





・・・ちなみに
11202の値は0070にコピーされますが、
11201の値もそれと同じように006Fにコピーされます。
今回の話には関係ないのでここに小さく載せておきます。



---------------------------------------------------










ふっふっふ・・・
これで終わったりはしない、まだまだだーっ。



・・・。



戦闘終了後のゴールドによると書きましたが、実は、店で256G以上のものを買った時にも
0070の数値は変わるのですよ!
(これに気付いた時はちょっと驚きでしたが)


簡単にお金を使える場所としてカジノでコインを200枚買ってみました(このときは3章だったので1枚200G)


40000G払いました。


40000(10進数)9C40(16進数) です。
(9C40はviewerで見ると40 9Cと並んでいる)

0070の値を見ると9Cでした。


実際に256G以上のお金を使った直後、ベホマラーを使うと効果が上がっております!
ベホマラーは「賢さ」「素早さ」「運のよさ」よりも何よりもお金のやりとりに左右されている事が判明しました!



上にお金のやりとり と書きましたが、その通り 物を売ったときも対象になります。
お金を預ける時や、引き出す時にも0070の数値は同様な変化をします。
さらに、宝箱からゴールドを取得した時もまた同様です。



ひとつ注意しておかなければならないのは、65535G以上のお金のやりとりがあると0070の値は
一回りして00に戻って、また1から増加し始める事です。
ま、00にならなければ特に問題ないと思いますけど。




最後に…
上の方にも小さく書きましたが、
0070は並び替えたキャラや、やりとりされた金額のアドレスから数値を受け取っているだけ(コピーされているだけ)みたいなので、
前回書いた 0070を固定している「幸せのベホマラーのコード」は、コピー元のアドレスには影響を与えません。きっと。




開発スタッフが仕込んだんじゃなくて偶然できあがった裏技という印象が強くなりましたが、
戦闘後のGで効果があるところまで仕込んでおいて、店で256G以上使った時の効果は予想外だったのかも…
(僕は開発スタッフじゃないのでゼンゼンわかりませんが)





-------------------

とまあ、何はともあれ、最初に掲げた情報の中にある不明な点について
原因というか起因となる事柄が何か ということは判明しました。

今回の事はロムを厳密に解析していけば、いずれは発見できたことでしょう。
が、しかし、メモリ上の情報をみていけば
簡単に、結構いろいろな事が解かります。


それとは逆に、本当に厳密な仕組みを知りたければ、解析くらいはしないといけないわけでもありますが…。




あー、そう。
ひょっとしたら今回調査した内容がロム解析に役立つかもしれません。あり得ます。
それに対して、ロム解析の資料がコード作成に役立つこともあります。


まあ、とりあえず、
メモリ上のデータを見る、という方法で簡単に調査できます。
調べてみると結構おもしろいです。
ここを読んでる皆さんにも 少しは楽しんでいただけたと思います。


今後も続けていきたいもんですなぁ…。


なかなか手ごたえのある事例がないんですけどねえ。
もしくは難しすぎるとか。


出る

トップへ戻る

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!